<?php

/**
 * Базовый класс компонентов - обработчиков действий.
 *
 */
abstract class Kernel_Action_Abstract extends Kernel_Filter
{
    /**
     * Путь к файлу шаблона.
     *
     * @var string
     */
    protected $_template;

    /**
     * Обрабатывает пользовательский запрос.
     *
     */
    public function process()
    {
        parent::process();

        // выставляем шаблон в самом начале, чтобы его можно было изменить
        // в процессе работы этого или вложенных компонентов
        if (null !== $this->_template) {
            Application::getResponse()->setTemplate($this->_template);
        }

        $this->_process();
    }

    /**
     * Реализация обработки пользовательского запроса.
     *
     */
    abstract protected function _process();
}
